namespace Rubikev.Common
{
   /// <summary>
   /// Interface for application events
   /// </summary>
   public interface IApplicationLifetimeAware
   {
      /// <summary>
      /// Runs when the application is starting
      /// </summary>
      void OnStarting();

      /// <summary>
      /// Runs when the application has started
      /// </summary>
      void OnStarted();

      /// <summary>
      /// Runs when the application is exiting
      /// </summary>
      void OnExiting();

      /// <summary>
      /// Runs when the application has exited
      /// </summary>
      void OnExited();
   }
}